﻿// QueryGrade.cpp : 实现文件
//

#include "stdafx.h"
#include "学生管理系统MFC.h"
#include "QueryGrade.h"
#include "afxdialogex.h"


// CQueryGrade 对话框

IMPLEMENT_DYNAMIC(CQueryGrade, CDialogEx)

CQueryGrade::CQueryGrade(CWnd* pParent /*=NULL*/)
	: CDialogEx(IDD_QUERYGRADE, pParent)
{

}

CQueryGrade::~CQueryGrade()
{
}

void CQueryGrade::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_COMBO1, m_combobox1);
	DDX_Control(pDX, IDC_COMBO2, m_combobox2);
	DDX_Control(pDX, IDC_COMBO3, m_combobox3);
	DDX_Control(pDX, IDC_COMBO4, m_combobox4);
	DDX_Control(pDX, IDC_LIST1, m_list);
}


BEGIN_MESSAGE_MAP(CQueryGrade, CDialogEx)
	ON_BN_CLICKED(IDC_BUTTON1, &CQueryGrade::OnBnClickedButton1)
	ON_BN_CLICKED(IDC_BUTTON3, &CQueryGrade::OnBnClickedButton3)
	ON_WM_SHOWWINDOW()
END_MESSAGE_MAP()


// CQueryGrade 消息处理程序


BOOL CQueryGrade::OnInitDialog()
{
	CDialogEx::OnInitDialog();
	m_combobox1.SetCurSel(0);
	m_combobox2.SetCurSel(0);
	m_combobox3.SetCurSel(0);
	m_combobox4.SetCurSel(0);
	CRect rect;
	// 获取编程语言列表视图控件的位置和大小   
	m_list.GetClientRect(&rect);
	// 为列表视图控件添加全行选中和栅格风格   
	m_list.SetExtendedStyle(m_list.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
	m_list.InsertColumn(0, _T("课头号"), LVCFMT_CENTER, rect.Width() / 3, 0);
	m_list.InsertColumn(1, _T("课程名称"), LVCFMT_CENTER, rect.Width() / 3, 0);
	m_list.InsertColumn(2, _T("课程类型"), LVCFMT_CENTER, rect.Width() / 3, 0);
	m_list.InsertColumn(3, _T("学分"), LVCFMT_CENTER, rect.Width() / 3, 0);
	m_list.InsertColumn(4, _T("教师"), LVCFMT_CENTER, rect.Width() / 3, 0);
	m_list.InsertColumn(5, _T("授课学院"), LVCFMT_CENTER, rect.Width() / 3, 0);
	m_list.InsertColumn(6, _T("学习类型	"), LVCFMT_CENTER, rect.Width() / 3, 0);
	m_list.InsertColumn(7, _T("学年"), LVCFMT_CENTER, rect.Width() / 3, 0);
	m_list.InsertColumn(8, _T("学期"), LVCFMT_CENTER, rect.Width() / 3, 0);
	m_list.InsertColumn(9, _T("成绩"), LVCFMT_CENTER, rect.Width() / 3, 0);
	// TODO:  在此添加额外的初始化

	return TRUE;  // return TRUE unless you set the focus to a control
				  // 异常: OCX 属性页应返回 FALSE
}

void CQueryGrade::Query(int i)
{
	m_list.DeleteAllItems();
	CString sql, 学年, 学期, 课程类型, 成绩;
	((CComboBox*)GetDlgItem(IDC_COMBO1))->GetWindowText(学年);
	((CComboBox*)GetDlgItem(IDC_COMBO2))->GetWindowText(学期);
	((CComboBox*)GetDlgItem(IDC_COMBO4))->GetWindowText(课程类型);
	((CComboBox*)GetDlgItem(IDC_COMBO3))->GetWindowText(成绩);
	//m_username = _T("2014301500095");
	sql = _T("SELECT 课程.课头号,课程名,课程类型,学分,教师.姓名,授课学院,学习类型,成绩.学年,成绩.学期,成绩 FROM 成绩,课程,教师 WHERE 课程.课头号=成绩.课头号 AND 课程.教师=教师.工号 AND 成绩.学号=") + m_username;
	if (i == 0)
	{
		sql += _T(" AND 课程类型='") + 课程类型 + _T("'");
		if (学年 != "全部")
			sql += _T(" AND 成绩.学年='") + 学年 + _T("'");
		if (学期 != "全部")
			sql += _T(" AND 成绩.学期='") + 学期 + _T("'");
		if (成绩 == "已出成绩")
			sql += _T(" AND 成绩 IS NOT NULL");
		if (成绩 == "未出成绩")
			sql += _T(" AND 成绩 IS NULL");
		if (成绩 == "及格")
			sql += _T(" AND 成绩 >=60");
		if (成绩 == "不及格")
			sql += _T(" AND 成绩 <60");
	}
	::CoInitialize(NULL);
	g_pDB->Initialize(ConnectionAddress, ConnectionDB, ConnectionUser, ConnectionPassword);
	CSqlStatement *stmt = g_pDB->ExecuteSQL(sql);
	while (stmt != NULL)
	{
		if (stmt->NextRow() == NULL)
		{
			break;
		}
		int nRow = m_list.InsertItem(0, stmt->ValueString(_T("课头号")));//插入行
		m_list.SetItemText(nRow, 1, stmt->ValueString(_T("课程名")));//设置数据
		m_list.SetItemText(nRow, 2, stmt->ValueString(_T("课程类型")));//设置数据
		m_list.SetItemText(nRow, 3, stmt->ValueString(_T("学分")));//设置数据
		m_list.SetItemText(nRow, 4, stmt->ValueString(_T("姓名")));//设置数据
		m_list.SetItemText(nRow, 5, stmt->ValueString(_T("授课学院")));//设置数据
		m_list.SetItemText(nRow, 6, stmt->ValueString(_T("学习类型")));//设置数据
		m_list.SetItemText(nRow, 7, stmt->ValueString(_T("年级")));//设置数据
		m_list.SetItemText(nRow, 8, stmt->ValueString(_T("学期")));//设置数据
		m_list.SetItemText(nRow, 9, stmt->ValueString(_T("成绩")));//设置数据
																  //m_list.SetItemText(nRow, 11, stmt->ValueString(_T("状态")));//设置数据
	}
	delete stmt;
	::CoUninitialize();
}

void CQueryGrade::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	Query(0);
}


void CQueryGrade::OnBnClickedButton3()
{
	// TODO: 在此添加控件通知处理程序代码
	Query(1);
}


void CQueryGrade::OnShowWindow(BOOL bShow, UINT nStatus)
{
	CDialogEx::OnShowWindow(bShow, nStatus);
	if (bShow == true)
		Query(1);
	// TODO: 在此处添加消息处理程序代码
}
void CQueryGrade::OnOK()
{

}